/**
 * 对axios进行二次封装
*/

import Axios from 'axios';
import { ElMessage } from "element-plus";
import useUserStore from '@/store/user';  //引入仓库数据
//进度条插件
//@ts-ignore
import nprogress from "nprogress";
import "nprogress/nprogress.css";


//创建axios实例
const request = Axios.create({
    baseURL: import.meta.env.VITE_APP_BASE_API,
    timeout:5000
})

//请求拦截器
request.interceptors.request.use(config => {
    nprogress.start();  //进度条开始
    const userStore = useUserStore();
    if(userStore.token){
        config.headers.token = userStore.token;
    }
    return config;
})

//响应拦截器
request.interceptors.response.use((response) => {
    nprogress.done();  //进度条结束
    return response.data;
}, (error) => {
    //处理网络错误
    let msg = '';
    let status = error.response.status;
    switch(status){
        case 401:
            msg = "token过期!";
            break;
        case 403:
            msg = "无权访问!";
            break;
        case 404:
            msg = "请求地址错误!";
            break;
        case 500:
            msg = "服务器出现问题!";
            break;
        default:
            msg = "网络错误!";
            break;
    }

    ElMessage({type:"error",message:msg});

    return Promise.reject(error);
})


//对外暴露
export default request;